package br.ucb.rest.controle.action.impl;

import java.util.Date;
import java.util.List;

import org.joda.time.DateTime;
import org.joda.time.Minutes;

import br.ucb.rest.controle.action.AbstractAction;
import br.ucb.rest.negocio.impl.GrupoPedidoBOS;
import br.ucb.rest.persistencia.vo.GrupoPedidoVO;
import br.ucb.rest.persistencia.vo.PedidoVO;
import br.ucb.rest.util.Constantes;

// status pedido 1, 2, 3
public class PainelPedidosAction extends AbstractAction {
	
	
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 20639184456372863L;

	public PainelPedidosAction() {
		super();
	}
	
	private List<GrupoPedidoVO> colGrupoPedidoVO;
	
	public String pedidoPronto(){
		
		GrupoPedidoBOS bos = GrupoPedidoBOS.getInstance();
		bos.pedidoPronto(Integer.valueOf(request.getParameter("chave")));
		
		return pedidosAtivos();
	}
	
	public String pedidosAtivos() {
		
		GrupoPedidoBOS bos = GrupoPedidoBOS.getInstance();
		colGrupoPedidoVO = bos.recuperaAbertos();
		
		for (GrupoPedidoVO grupo : colGrupoPedidoVO) {
			
			Date h = grupo.getDataHoraPedido();
			
			List<PedidoVO> pedidos = grupo.getColPedidoVO();
			
			Integer maior = pedidos.get(0).getCardapioVO().getQtTempoPreparo();
			for (PedidoVO pedidoVO : pedidos) {
				if(pedidoVO.getCardapioVO().getQtTempoPreparo() > maior)maior = pedidoVO.getCardapioVO().getQtTempoPreparo();
			}
			
			DateTime tempo = new DateTime(h);
			tempo = tempo.plusMinutes(maior);
			
			DateTime agora = new DateTime(System.currentTimeMillis());
			
			int falta = Minutes.minutesBetween(tempo, agora).getMinutes()*-1;
			
			int avg = maior/3;
			
//			System.out.println(avg+"   ");
//			System.out.println(falta);
//			System.out.println(maior);
			
			if(falta >= avg*2)
			{
				grupo.setCor(Constantes.VERDE);
				
			}
			else if(falta >= avg)
			{
				grupo.setCor(Constantes.AMARELO);
			
			}
			else if(falta < avg)
			{
				grupo.setCor(Constantes.VERMELHO);
			}
		}
		
		return SUCCESS;
		
	}

	public List<GrupoPedidoVO> getColGrupoPedidoVO() {
		return colGrupoPedidoVO;
	}

	public void setColGrupoPedidoVO(List<GrupoPedidoVO> colGrupoPedidoVO) {
		this.colGrupoPedidoVO = colGrupoPedidoVO;
	}


	

}
